﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework;

namespace ProjectCastamere
{
    public abstract class GameState
    {
        public readonly Application application;
        public GameState(Application application)
        {
            this.application = application;
        }

        /// <summary>
        /// when a state is pushed on top of the stack it gains focus, when it
        /// is not at the top of the stack it loses focus, these two functions are
        /// called when these events occur
        /// </summary>
        public virtual void FocusGained() { }
        public virtual void FocusLost() { }

        // process user input
        public abstract void Input();

        // update
        public abstract void Update();

        // draw to screen
        public abstract void Draw();
    }
}
